const _cloneDeep = require('lodash/cloneDeep')

// 移除空字符串，null, undefined
export function clearEmptyParam(config) {
	['data', 'params'].forEach(item => {
		if (config[item]) {
			const keys = Object.keys(config[item])
			if (keys.length) {
				keys.forEach(key => {
					const rawType = toRawType(config[item])
					if (['', undefined, null].includes(toRawType(config[item][key]) == 'String' ?
							config[item][key].trim() : config[item][key]) && ['Object'].includes(
							rawType)) {
						// 移除属性之前，进行深拷贝断开引用，避免影响页面
						config[item] = _cloneDeep(config[item])
						delete config[item][key]
					}
				})
			}
		}
	})
}

/**
 * @description 获取原始类型
 * @param {*} value
 * @returns {String} 类型字符串，如'String', 'Object', 'Null', 'Boolean', 'Number', 'Array'
 */
export function toRawType(value) {
	return Object.prototype.toString.call(value).slice(8, -1)
}

export default {
	clearEmptyParam
}